package com.cx.pojo;

import com.cx.common.BaseEntity;

import java.util.ArrayList;
import java.util.List;

public class BaseExample extends BaseEntity {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public BaseExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andBaseIdIsNull() {
            addCriterion("base_id is null");
            return (Criteria) this;
        }

        public Criteria andBaseIdIsNotNull() {
            addCriterion("base_id is not null");
            return (Criteria) this;
        }

        public Criteria andBaseIdEqualTo(Integer value) {
            addCriterion("base_id =", value, "baseId");
            return (Criteria) this;
        }

        public Criteria andBaseIdNotEqualTo(Integer value) {
            addCriterion("base_id <>", value, "baseId");
            return (Criteria) this;
        }

        public Criteria andBaseIdGreaterThan(Integer value) {
            addCriterion("base_id >", value, "baseId");
            return (Criteria) this;
        }

        public Criteria andBaseIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("base_id >=", value, "baseId");
            return (Criteria) this;
        }

        public Criteria andBaseIdLessThan(Integer value) {
            addCriterion("base_id <", value, "baseId");
            return (Criteria) this;
        }

        public Criteria andBaseIdLessThanOrEqualTo(Integer value) {
            addCriterion("base_id <=", value, "baseId");
            return (Criteria) this;
        }

        public Criteria andBaseIdIn(List<Integer> values) {
            addCriterion("base_id in", values, "baseId");
            return (Criteria) this;
        }

        public Criteria andBaseIdNotIn(List<Integer> values) {
            addCriterion("base_id not in", values, "baseId");
            return (Criteria) this;
        }

        public Criteria andBaseIdBetween(Integer value1, Integer value2) {
            addCriterion("base_id between", value1, value2, "baseId");
            return (Criteria) this;
        }

        public Criteria andBaseIdNotBetween(Integer value1, Integer value2) {
            addCriterion("base_id not between", value1, value2, "baseId");
            return (Criteria) this;
        }

        public Criteria andCarlevelIsNull() {
            addCriterion("carlevel is null");
            return (Criteria) this;
        }

        public Criteria andCarlevelIsNotNull() {
            addCriterion("carlevel is not null");
            return (Criteria) this;
        }

        public Criteria andCarlevelEqualTo(String value) {
            addCriterion("carlevel =", value, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelNotEqualTo(String value) {
            addCriterion("carlevel <>", value, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelGreaterThan(String value) {
            addCriterion("carlevel >", value, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelGreaterThanOrEqualTo(String value) {
            addCriterion("carlevel >=", value, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelLessThan(String value) {
            addCriterion("carlevel <", value, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelLessThanOrEqualTo(String value) {
            addCriterion("carlevel <=", value, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelLike(String value) {
            addCriterion("carlevel like", value, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelNotLike(String value) {
            addCriterion("carlevel not like", value, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelIn(List<String> values) {
            addCriterion("carlevel in", values, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelNotIn(List<String> values) {
            addCriterion("carlevel not in", values, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelBetween(String value1, String value2) {
            addCriterion("carlevel between", value1, value2, "carlevel");
            return (Criteria) this;
        }

        public Criteria andCarlevelNotBetween(String value1, String value2) {
            addCriterion("carlevel not between", value1, value2, "carlevel");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionIsNull() {
            addCriterion("oil_consumption is null");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionIsNotNull() {
            addCriterion("oil_consumption is not null");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionEqualTo(String value) {
            addCriterion("oil_consumption =", value, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionNotEqualTo(String value) {
            addCriterion("oil_consumption <>", value, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionGreaterThan(String value) {
            addCriterion("oil_consumption >", value, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionGreaterThanOrEqualTo(String value) {
            addCriterion("oil_consumption >=", value, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionLessThan(String value) {
            addCriterion("oil_consumption <", value, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionLessThanOrEqualTo(String value) {
            addCriterion("oil_consumption <=", value, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionLike(String value) {
            addCriterion("oil_consumption like", value, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionNotLike(String value) {
            addCriterion("oil_consumption not like", value, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionIn(List<String> values) {
            addCriterion("oil_consumption in", values, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionNotIn(List<String> values) {
            addCriterion("oil_consumption not in", values, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionBetween(String value1, String value2) {
            addCriterion("oil_consumption between", value1, value2, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andOilConsumptionNotBetween(String value1, String value2) {
            addCriterion("oil_consumption not between", value1, value2, "oilConsumption");
            return (Criteria) this;
        }

        public Criteria andDisplacementIsNull() {
            addCriterion("displacement is null");
            return (Criteria) this;
        }

        public Criteria andDisplacementIsNotNull() {
            addCriterion("displacement is not null");
            return (Criteria) this;
        }

        public Criteria andDisplacementEqualTo(String value) {
            addCriterion("displacement =", value, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementNotEqualTo(String value) {
            addCriterion("displacement <>", value, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementGreaterThan(String value) {
            addCriterion("displacement >", value, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementGreaterThanOrEqualTo(String value) {
            addCriterion("displacement >=", value, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementLessThan(String value) {
            addCriterion("displacement <", value, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementLessThanOrEqualTo(String value) {
            addCriterion("displacement <=", value, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementLike(String value) {
            addCriterion("displacement like", value, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementNotLike(String value) {
            addCriterion("displacement not like", value, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementIn(List<String> values) {
            addCriterion("displacement in", values, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementNotIn(List<String> values) {
            addCriterion("displacement not in", values, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementBetween(String value1, String value2) {
            addCriterion("displacement between", value1, value2, "displacement");
            return (Criteria) this;
        }

        public Criteria andDisplacementNotBetween(String value1, String value2) {
            addCriterion("displacement not between", value1, value2, "displacement");
            return (Criteria) this;
        }

        public Criteria andQualityIsNull() {
            addCriterion("quality is null");
            return (Criteria) this;
        }

        public Criteria andQualityIsNotNull() {
            addCriterion("quality is not null");
            return (Criteria) this;
        }

        public Criteria andQualityEqualTo(String value) {
            addCriterion("quality =", value, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityNotEqualTo(String value) {
            addCriterion("quality <>", value, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityGreaterThan(String value) {
            addCriterion("quality >", value, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityGreaterThanOrEqualTo(String value) {
            addCriterion("quality >=", value, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityLessThan(String value) {
            addCriterion("quality <", value, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityLessThanOrEqualTo(String value) {
            addCriterion("quality <=", value, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityLike(String value) {
            addCriterion("quality like", value, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityNotLike(String value) {
            addCriterion("quality not like", value, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityIn(List<String> values) {
            addCriterion("quality in", values, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityNotIn(List<String> values) {
            addCriterion("quality not in", values, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityBetween(String value1, String value2) {
            addCriterion("quality between", value1, value2, "quality");
            return (Criteria) this;
        }

        public Criteria andQualityNotBetween(String value1, String value2) {
            addCriterion("quality not between", value1, value2, "quality");
            return (Criteria) this;
        }

        public Criteria andGearboxIsNull() {
            addCriterion("gearbox is null");
            return (Criteria) this;
        }

        public Criteria andGearboxIsNotNull() {
            addCriterion("gearbox is not null");
            return (Criteria) this;
        }

        public Criteria andGearboxEqualTo(String value) {
            addCriterion("gearbox =", value, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxNotEqualTo(String value) {
            addCriterion("gearbox <>", value, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxGreaterThan(String value) {
            addCriterion("gearbox >", value, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxGreaterThanOrEqualTo(String value) {
            addCriterion("gearbox >=", value, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxLessThan(String value) {
            addCriterion("gearbox <", value, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxLessThanOrEqualTo(String value) {
            addCriterion("gearbox <=", value, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxLike(String value) {
            addCriterion("gearbox like", value, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxNotLike(String value) {
            addCriterion("gearbox not like", value, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxIn(List<String> values) {
            addCriterion("gearbox in", values, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxNotIn(List<String> values) {
            addCriterion("gearbox not in", values, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxBetween(String value1, String value2) {
            addCriterion("gearbox between", value1, value2, "gearbox");
            return (Criteria) this;
        }

        public Criteria andGearboxNotBetween(String value1, String value2) {
            addCriterion("gearbox not between", value1, value2, "gearbox");
            return (Criteria) this;
        }

        public Criteria andEIdIsNull() {
            addCriterion("e_id is null");
            return (Criteria) this;
        }

        public Criteria andEIdIsNotNull() {
            addCriterion("e_id is not null");
            return (Criteria) this;
        }

        public Criteria andEIdEqualTo(Integer value) {
            addCriterion("e_id =", value, "eId");
            return (Criteria) this;
        }

        public Criteria andEIdNotEqualTo(Integer value) {
            addCriterion("e_id <>", value, "eId");
            return (Criteria) this;
        }

        public Criteria andEIdGreaterThan(Integer value) {
            addCriterion("e_id >", value, "eId");
            return (Criteria) this;
        }

        public Criteria andEIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("e_id >=", value, "eId");
            return (Criteria) this;
        }

        public Criteria andEIdLessThan(Integer value) {
            addCriterion("e_id <", value, "eId");
            return (Criteria) this;
        }

        public Criteria andEIdLessThanOrEqualTo(Integer value) {
            addCriterion("e_id <=", value, "eId");
            return (Criteria) this;
        }

        public Criteria andEIdIn(List<Integer> values) {
            addCriterion("e_id in", values, "eId");
            return (Criteria) this;
        }

        public Criteria andEIdNotIn(List<Integer> values) {
            addCriterion("e_id not in", values, "eId");
            return (Criteria) this;
        }

        public Criteria andEIdBetween(Integer value1, Integer value2) {
            addCriterion("e_id between", value1, value2, "eId");
            return (Criteria) this;
        }

        public Criteria andEIdNotBetween(Integer value1, Integer value2) {
            addCriterion("e_id not between", value1, value2, "eId");
            return (Criteria) this;
        }

        public Criteria andGIdIsNull() {
            addCriterion("g_id is null");
            return (Criteria) this;
        }

        public Criteria andGIdIsNotNull() {
            addCriterion("g_id is not null");
            return (Criteria) this;
        }

        public Criteria andGIdEqualTo(Integer value) {
            addCriterion("g_id =", value, "gId");
            return (Criteria) this;
        }

        public Criteria andGIdNotEqualTo(Integer value) {
            addCriterion("g_id <>", value, "gId");
            return (Criteria) this;
        }

        public Criteria andGIdGreaterThan(Integer value) {
            addCriterion("g_id >", value, "gId");
            return (Criteria) this;
        }

        public Criteria andGIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("g_id >=", value, "gId");
            return (Criteria) this;
        }

        public Criteria andGIdLessThan(Integer value) {
            addCriterion("g_id <", value, "gId");
            return (Criteria) this;
        }

        public Criteria andGIdLessThanOrEqualTo(Integer value) {
            addCriterion("g_id <=", value, "gId");
            return (Criteria) this;
        }

        public Criteria andGIdIn(List<Integer> values) {
            addCriterion("g_id in", values, "gId");
            return (Criteria) this;
        }

        public Criteria andGIdNotIn(List<Integer> values) {
            addCriterion("g_id not in", values, "gId");
            return (Criteria) this;
        }

        public Criteria andGIdBetween(Integer value1, Integer value2) {
            addCriterion("g_id between", value1, value2, "gId");
            return (Criteria) this;
        }

        public Criteria andGIdNotBetween(Integer value1, Integer value2) {
            addCriterion("g_id not between", value1, value2, "gId");
            return (Criteria) this;
        }

        public Criteria andChassisIdIsNull() {
            addCriterion("chassis_id is null");
            return (Criteria) this;
        }

        public Criteria andChassisIdIsNotNull() {
            addCriterion("chassis_id is not null");
            return (Criteria) this;
        }

        public Criteria andChassisIdEqualTo(Integer value) {
            addCriterion("chassis_id =", value, "chassisId");
            return (Criteria) this;
        }

        public Criteria andChassisIdNotEqualTo(Integer value) {
            addCriterion("chassis_id <>", value, "chassisId");
            return (Criteria) this;
        }

        public Criteria andChassisIdGreaterThan(Integer value) {
            addCriterion("chassis_id >", value, "chassisId");
            return (Criteria) this;
        }

        public Criteria andChassisIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("chassis_id >=", value, "chassisId");
            return (Criteria) this;
        }

        public Criteria andChassisIdLessThan(Integer value) {
            addCriterion("chassis_id <", value, "chassisId");
            return (Criteria) this;
        }

        public Criteria andChassisIdLessThanOrEqualTo(Integer value) {
            addCriterion("chassis_id <=", value, "chassisId");
            return (Criteria) this;
        }

        public Criteria andChassisIdIn(List<Integer> values) {
            addCriterion("chassis_id in", values, "chassisId");
            return (Criteria) this;
        }

        public Criteria andChassisIdNotIn(List<Integer> values) {
            addCriterion("chassis_id not in", values, "chassisId");
            return (Criteria) this;
        }

        public Criteria andChassisIdBetween(Integer value1, Integer value2) {
            addCriterion("chassis_id between", value1, value2, "chassisId");
            return (Criteria) this;
        }

        public Criteria andChassisIdNotBetween(Integer value1, Integer value2) {
            addCriterion("chassis_id not between", value1, value2, "chassisId");
            return (Criteria) this;
        }

        public Criteria andWheelIdIsNull() {
            addCriterion("wheel_id is null");
            return (Criteria) this;
        }

        public Criteria andWheelIdIsNotNull() {
            addCriterion("wheel_id is not null");
            return (Criteria) this;
        }

        public Criteria andWheelIdEqualTo(Integer value) {
            addCriterion("wheel_id =", value, "wheelId");
            return (Criteria) this;
        }

        public Criteria andWheelIdNotEqualTo(Integer value) {
            addCriterion("wheel_id <>", value, "wheelId");
            return (Criteria) this;
        }

        public Criteria andWheelIdGreaterThan(Integer value) {
            addCriterion("wheel_id >", value, "wheelId");
            return (Criteria) this;
        }

        public Criteria andWheelIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("wheel_id >=", value, "wheelId");
            return (Criteria) this;
        }

        public Criteria andWheelIdLessThan(Integer value) {
            addCriterion("wheel_id <", value, "wheelId");
            return (Criteria) this;
        }

        public Criteria andWheelIdLessThanOrEqualTo(Integer value) {
            addCriterion("wheel_id <=", value, "wheelId");
            return (Criteria) this;
        }

        public Criteria andWheelIdIn(List<Integer> values) {
            addCriterion("wheel_id in", values, "wheelId");
            return (Criteria) this;
        }

        public Criteria andWheelIdNotIn(List<Integer> values) {
            addCriterion("wheel_id not in", values, "wheelId");
            return (Criteria) this;
        }

        public Criteria andWheelIdBetween(Integer value1, Integer value2) {
            addCriterion("wheel_id between", value1, value2, "wheelId");
            return (Criteria) this;
        }

        public Criteria andWheelIdNotBetween(Integer value1, Integer value2) {
            addCriterion("wheel_id not between", value1, value2, "wheelId");
            return (Criteria) this;
        }

        public Criteria andBodyIdIsNull() {
            addCriterion("body_id is null");
            return (Criteria) this;
        }

        public Criteria andBodyIdIsNotNull() {
            addCriterion("body_id is not null");
            return (Criteria) this;
        }

        public Criteria andBodyIdEqualTo(Integer value) {
            addCriterion("body_id =", value, "bodyId");
            return (Criteria) this;
        }

        public Criteria andBodyIdNotEqualTo(Integer value) {
            addCriterion("body_id <>", value, "bodyId");
            return (Criteria) this;
        }

        public Criteria andBodyIdGreaterThan(Integer value) {
            addCriterion("body_id >", value, "bodyId");
            return (Criteria) this;
        }

        public Criteria andBodyIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("body_id >=", value, "bodyId");
            return (Criteria) this;
        }

        public Criteria andBodyIdLessThan(Integer value) {
            addCriterion("body_id <", value, "bodyId");
            return (Criteria) this;
        }

        public Criteria andBodyIdLessThanOrEqualTo(Integer value) {
            addCriterion("body_id <=", value, "bodyId");
            return (Criteria) this;
        }

        public Criteria andBodyIdIn(List<Integer> values) {
            addCriterion("body_id in", values, "bodyId");
            return (Criteria) this;
        }

        public Criteria andBodyIdNotIn(List<Integer> values) {
            addCriterion("body_id not in", values, "bodyId");
            return (Criteria) this;
        }

        public Criteria andBodyIdBetween(Integer value1, Integer value2) {
            addCriterion("body_id between", value1, value2, "bodyId");
            return (Criteria) this;
        }

        public Criteria andBodyIdNotBetween(Integer value1, Integer value2) {
            addCriterion("body_id not between", value1, value2, "bodyId");
            return (Criteria) this;
        }

        public Criteria andStatusIsNull() {
            addCriterion("status is null");
            return (Criteria) this;
        }

        public Criteria andStatusIsNotNull() {
            addCriterion("status is not null");
            return (Criteria) this;
        }

        public Criteria andStatusEqualTo(Integer value) {
            addCriterion("status =", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotEqualTo(Integer value) {
            addCriterion("status <>", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThan(Integer value) {
            addCriterion("status >", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("status >=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThan(Integer value) {
            addCriterion("status <", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThanOrEqualTo(Integer value) {
            addCriterion("status <=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusIn(List<Integer> values) {
            addCriterion("status in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotIn(List<Integer> values) {
            addCriterion("status not in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusBetween(Integer value1, Integer value2) {
            addCriterion("status between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("status not between", value1, value2, "status");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}